/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import { SupersetClient } from '../../../connection';
import { BaseParams } from '../types';
import { QueryFormData } from '../../types/QueryFormData';

export interface Params extends BaseParams {
  sliceId: number;
  overrideFormData?: Partial<QueryFormData>;
}

export default function getFormData({
  client = SupersetClient,
  sliceId,
  overrideFormData,
  requestConfig,
}: Params) {
  const promise = client
    .get({
      endpoint: `/api/v1/form_data/?slice_id=${sliceId}`,
      ...requestConfig,
    })
    .then(({ json }) => json as QueryFormData);

  return overrideFormData
    ? promise.then(formData => ({ ...formData, ...overrideFormData }))
    : promise;
}
